﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ClassesMetiers;
using Microsoft.VisualBasic;
using GUI.UsersControls;

namespace GUI.Panels.Besoins
{
    public partial class PanelLesFonctionnalites : UcPanel
    {
        private Dictionary<int, Fonctionnalite> _lesFonctionnalites;
        private int _idFonctionnaliteSelectionne;

        public PanelLesFonctionnalites()
        {
            InitializeComponent();
            titre = "Gérer les fonctionnalités";
            indexOnglet = ongletIndex.BESOINS;
            _lesFonctionnalites = new Dictionary<int,Fonctionnalite>();
            _idFonctionnaliteSelectionne = 0;
        }

        public override void afficher()
        {
            base.afficher();
            mettreAJourAffichage();
        }

        public override void masquer()
        {
            base.masquer();
        }

        public void mettreAJourAffichage()
        {
            _lesFonctionnalites = _ControleurClassesMetiers.recupererLesFonctionnalites();
            dgvFonctionnalites.Rows.Clear();
            foreach (KeyValuePair<int, Fonctionnalite> uneDonnee in _lesFonctionnalites)
            {
                dgvFonctionnalites.Rows.Add(uneDonnee.Value.versTableau());
            }
            if (_lesFonctionnalites.Count > 0)
                selectionerUneFonctionnalite(_lesFonctionnalites.Keys.ElementAt(0));

            btnModifier.Enabled = (_lesFonctionnalites.Count > 0);
            btnSupprimer.Enabled = (_lesFonctionnalites.Count > 0);
        }

        private void selectionerUneFonctionnalite(int idFonctionnalite)
        {
            _idFonctionnaliteSelectionne = idFonctionnalite;
        }

        private void btnRafraichir_Click(object sender, EventArgs e)
        {
            mettreAJourAffichage();
        }

        private void dgvFonctionnalites_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1 && e.RowIndex < _lesFonctionnalites.Count)
                selectionerUneFonctionnalite(int.Parse(dgvFonctionnalites[0, e.RowIndex].Value.ToString()));
        }

        private void btnAjouter_Click(object sender, EventArgs e)
        {
            String result = Interaction.InputBox("Nom de la Fonctionnalité ?", "Nom", "", 500, 300);
            if (result.Trim() != "")
            {
                Boolean modificationReussi = _ControleurClassesMetiers.ajouterUnProduit(new Produit(result));
                if (modificationReussi)
                    mettreAJourAffichage();
                else
                    laFormMain.MessageErreur.afficher("Les modifications n'ont pas pu être enregistrées suite a une erreur.", true);
            }
        }

        private void btnModifier_Click(object sender, EventArgs e)
        {
            String result = Interaction.InputBox("Nouveau nom de la Fonctionnalité ?\n (Nom avant modification : " + _lesFonctionnalites[_idFonctionnaliteSelectionne].nom + ")", "Nom", _lesFonctionnalites[_idFonctionnaliteSelectionne].nom, 500, 300);
            if (result.Trim() != "" && result != _lesFonctionnalites[_idFonctionnaliteSelectionne].nom)
            {
                Boolean modificationReussi = _ControleurClassesMetiers.sauvegarderUnFonctionnalite(_lesFonctionnalites[_idFonctionnaliteSelectionne]);
                if (modificationReussi)
                    mettreAJourAffichage();
                else
                    laFormMain.MessageErreur.afficher("Les modifications n'ont pas pu être enregistrées suite a une erreur.", true);
            }
        }

        private void btnSupprimer_Click(object sender, EventArgs e)
        {
            Boolean modificationReussi = _ControleurClassesMetiers.supprimerUnFonctionnalite(_lesFonctionnalites[_idFonctionnaliteSelectionne]);
            if (modificationReussi)
                mettreAJourAffichage();
            else
                laFormMain.MessageErreur.afficher("Les modifications n'ont pas pu être enregistrées suite a une erreur.", true);
        }



    }
}
